package it.maganar.lesscaos.client;



import it.maganar.lesscaos.entity.Disponibilita;
import it.maganar.lesscaos.entity.Partecipazione;
import it.maganar.lesscaos.entity.Tappa;
import it.maganar.lesscaos.exception.UserNotLoggedException;
import it.maganar.lesscaos.session.ServiceGateRemote;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Date;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class PartecipazioneWidget {

	ServiceGateRemote serviceGate;
	int i;
	List<Partecipazione> listaPartecipazioni;
	List<Disponibilita> listaPercorsi;
	
	private JFrame framePrincipale;
	private JPanel pannelloTitoloPrincipale;
	private JPanel pannelloCorpoPrincipale;
	private JLabel titoloPrincipale;
	private JPanel pannelloMenuPrincipale;
	private JButton bottoneVisualizzaPartecipazioni;
	private JButton bottoneNuovaPartecipazione;
	private JFrame frameVisualizza;
	private JPanel pannelloTitoloVisualizza;
	private JPanel pannelloCorpoVisualizza;
	private JLabel titoloVisualizza;
	private JFrame frameNuova;
	private JPanel pannelloTitoloNuova;
	private JPanel pannelloCorpoNuova;
	private JLabel titoloNuova;
	private JButton[] bottoneElimina;
	private JPanel[] pannelloBottoneElimina;
	
	
		
	
	public PartecipazioneWidget(final LessCaosMainWidget lcmw) {
		
		serviceGate = NetworkConnector.sgr;
		
		//****************** FINESTRA PRINCIPALE ********************//
		
		// Inizializzazione Frame
		framePrincipale = new JFrame("LESS-CAOS - Partecipazioni");
		framePrincipale.setLayout(new BorderLayout());
		
		
		// Inizializzazione e Inserimento pannelli principali
		pannelloTitoloPrincipale = new JPanel();
		pannelloTitoloPrincipale.setLayout(new FlowLayout());
		pannelloTitoloPrincipale.setBackground(Color.DARK_GRAY);
		framePrincipale.add(pannelloTitoloPrincipale, BorderLayout.NORTH);
		
		pannelloCorpoPrincipale = new JPanel();
		pannelloCorpoPrincipale.setLayout(new FlowLayout());
		//pannelloCorpo.setBackground(Color.LIGHT_GRAY);
		framePrincipale.add(pannelloCorpoPrincipale, BorderLayout.CENTER);
		
		pannelloMenuPrincipale = new JPanel();
		pannelloMenuPrincipale.setLayout(new GridLayout(4,1));
		pannelloCorpoPrincipale.add(pannelloMenuPrincipale);
		
		
		// Inizializzazione e Inserimento label
		titoloPrincipale = new JLabel("Partecipazioni");
		titoloPrincipale.setForeground(Color.WHITE);
		pannelloTitoloPrincipale.add(titoloPrincipale);
		
		
		//Inizializzazione e Inserimento Pulsanti
		
		pannelloMenuPrincipale.add(new JLabel(""));
		
		bottoneVisualizzaPartecipazioni = new JButton("Visualizza Partecipazioni");
		pannelloMenuPrincipale.add(bottoneVisualizzaPartecipazioni);
		
		pannelloMenuPrincipale.add(new JLabel(""));

		bottoneNuovaPartecipazione = new JButton("Cerca Percorso");
		pannelloMenuPrincipale.add(bottoneNuovaPartecipazione);
						
		
		//END
		framePrincipale.pack();
		framePrincipale.setSize(500,400);
		framePrincipale.setVisible(true);
		//framePrincipale.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		framePrincipale.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent event) {
				lcmw.setVisible(true);
	        } 
	    });
		
		//*** Eventi ***//
		
		bottoneVisualizzaPartecipazioni.addMouseListener( 	new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent arg0) {}
			
			@Override
			public void mousePressed(MouseEvent arg0) {
				
				listaPartecipazioni = null;
				
				try {					
					listaPartecipazioni = serviceGate.ottieniListaPartecipazioni();

					// ******************* FINESTRA VISUALIZZA PARTECIPAZIONI **********************//
					
					
					// Inizializzazione Frame
					frameVisualizza = new JFrame("LESS-CAOS - Partecipazioni");
					frameVisualizza.setLayout(new BorderLayout());
					
					
					// Inizializzazione e Inserimento pannelli principali
					pannelloTitoloVisualizza = new JPanel();
					pannelloTitoloVisualizza.setLayout(new FlowLayout());
					pannelloTitoloVisualizza.setBackground(Color.DARK_GRAY);
					frameVisualizza.add(pannelloTitoloVisualizza, BorderLayout.NORTH);
					
					pannelloCorpoVisualizza = new JPanel();
					pannelloCorpoVisualizza.setLayout(new FlowLayout());
					//pannelloCorpo.setBackground(Color.LIGHT_GRAY);
					frameVisualizza.add(pannelloCorpoVisualizza, BorderLayout.CENTER);
					
					JPanel pannelloPartecipazioni = new JPanel();		
					pannelloPartecipazioni.setBackground(Color.white);
					pannelloCorpoVisualizza.add(pannelloPartecipazioni);
					
					GridLayout layout = new GridLayout(1,8);
					//layout.setHgap(20);
					pannelloPartecipazioni.setLayout(layout);
					
					
					// Inizializzazione e Inserimento label
					titoloVisualizza = new JLabel("Partecipazioni presenti");
					titoloVisualizza.setForeground(Color.WHITE);
					pannelloTitoloVisualizza.add(titoloVisualizza);
					
					JLabel lPartenza = new JLabel("Partenza");
					lPartenza.setOpaque(true);
					lPartenza.setBackground(Color.GRAY);
					lPartenza.setForeground(Color.WHITE);
					lPartenza.setPreferredSize(new Dimension(100, 0));
					
					JLabel lArrivo = new JLabel("Arrivo");
					lArrivo.setOpaque(true);
					lArrivo.setBackground(Color.GRAY);
					lArrivo.setForeground(Color.WHITE);
		/*			
					JLabel lTappe = new JLabel("Tappe");
					lTappe.setOpaque(true);
					lTappe.setBackground(Color.GRAY);
					lTappe.setForeground(Color.WHITE);
		*/			
					JLabel lOraPartenza = new JLabel("Ora Partenza");
					lOraPartenza.setOpaque(true);
					lOraPartenza.setBackground(Color.GRAY);
					lOraPartenza.setForeground(Color.WHITE);
					
					JLabel lOraArrivo = new JLabel("Ora Arrivo");
					lOraArrivo.setOpaque(true);
					lOraArrivo.setBackground(Color.GRAY);
					lOraArrivo.setForeground(Color.WHITE);
					
					JLabel lData = new JLabel("Data");
					lData.setOpaque(true);
					lData.setBackground(Color.GRAY);
					lData.setForeground(Color.WHITE);
					
					JLabel lTipoVeicolo = new JLabel("Tipo Veicolo");
					lTipoVeicolo.setOpaque(true);
					lTipoVeicolo.setBackground(Color.GRAY);
					lTipoVeicolo.setForeground(Color.WHITE);
		/*			
					JLabel lNumeroPosti = new JLabel("Numero Posti");
					lNumeroPosti.setOpaque(true);
					lNumeroPosti.setBackground(Color.GRAY);
					lNumeroPosti.setForeground(Color.WHITE);				
					
					JLabel lPartecipanti = new JLabel("Partecipanti");
					lPartecipanti.setOpaque(true);
					lPartecipanti.setBackground(Color.GRAY);
					lPartecipanti.setForeground(Color.WHITE);
		*/							
					JLabel lIssuer = new JLabel("Issuer");
					lIssuer.setOpaque(true);
					lIssuer.setBackground(Color.GRAY);
					lIssuer.setForeground(Color.WHITE);
					
					
					JLabel lVuoto = new JLabel("");
					lVuoto.setOpaque(true);
					lVuoto.setBackground(Color.GRAY);//pannelloCorpoVisualizza.getBackground());
					
					pannelloPartecipazioni.add(lPartenza);//, JLabel.CENTER));
					pannelloPartecipazioni.add(lArrivo);//, JLabel.CENTER));			
					pannelloPartecipazioni.add(lOraPartenza);//, JLabel.CENTER));
					pannelloPartecipazioni.add(lOraArrivo);//, JLabel.CENTER));
					pannelloPartecipazioni.add(lData);//, JLabel.CENTER));
					pannelloPartecipazioni.add(lTipoVeicolo);//, JLabel.CENTER));
					pannelloPartecipazioni.add(lIssuer);
					pannelloPartecipazioni.add(lVuoto);
						
					
					
					//+++ Inserimento Partecipazione +++//
					if (listaPartecipazioni != null){
						layout.setRows(listaPartecipazioni.size()+1);
						pannelloBottoneElimina = new JPanel[listaPartecipazioni.size()];
						bottoneElimina = new JButton[listaPartecipazioni.size()];
						
						for (i=0; i<listaPartecipazioni.size(); i++){
							JLabel ldPartenza = new JLabel(listaPartecipazioni.get(i).getPartenza().getIndirizzo());
							JLabel ldArrivo = new JLabel(listaPartecipazioni.get(i).getArrivo().getIndirizzo());												
							JLabel ldOrarioPart = new JLabel(listaPartecipazioni.get(i).getPartenza().getOrario().toString());
							JLabel ldOrarioArr = new JLabel(listaPartecipazioni.get(i).getArrivo().getOrario().toString());						
							//data
							Date data = listaPartecipazioni.get(i).getIscrizione().getData();
							JLabel ldData;
							if(data == null) ldData = new JLabel("giornaliera");
							else ldData = new JLabel(data.toString());
							// fine data
							JLabel ldVeicolo = new JLabel(listaPartecipazioni.get(i).getIscrizione().getTipoVeicolo().toString());
							JLabel ldIssuer = new JLabel(listaPartecipazioni.get(i).getIscrizione().getIssuer().getNome()+" "+
									listaPartecipazioni.get(i).getIscrizione().getIssuer().getCognome());
													
							ldPartenza.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldPartenza.setOpaque(true); ldPartenza.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldPartenza);
							
							ldArrivo.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldArrivo.setOpaque(true); ldArrivo.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldArrivo);							
							
							ldOrarioPart.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldOrarioPart.setOpaque(true); ldOrarioPart.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldOrarioPart);
							
							ldOrarioArr.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldOrarioArr.setOpaque(true); ldOrarioArr.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldOrarioArr);
							
							ldData.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldData.setOpaque(true); ldData.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldData);
							
							ldVeicolo.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldVeicolo.setOpaque(true); ldVeicolo.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldVeicolo);
																		
							ldIssuer.setVerticalAlignment(JLabel.TOP);
							if (i%2 == 1){ ldIssuer.setOpaque(true); ldIssuer.setBackground(pannelloCorpoVisualizza.getBackground()); }
							pannelloPartecipazioni.add(ldIssuer);
						
							
							// bottoneElimina
							
							pannelloBottoneElimina[i] = new JPanel();
							pannelloBottoneElimina[i].setLayout(new FlowLayout());
							if (i%2 == 1) pannelloBottoneElimina[i].setBackground(pannelloCorpoVisualizza.getBackground());
							else pannelloBottoneElimina[i].setBackground(Color.WHITE);
							pannelloPartecipazioni.add(pannelloBottoneElimina[i]);
							
							bottoneElimina[i] = new JButton("Elimina");
							pannelloBottoneElimina[i].add(bottoneElimina[i]);
							
							bottoneElimina[i].addMouseListener( new MouseListener(){
								
								int id = listaPartecipazioni.get(i).getId();
								int cur = i;
								@Override
								public void mouseClicked(MouseEvent arg0) {}

								@Override
								public void mousePressed(MouseEvent arg0) {
									if (bottoneElimina[cur].isEnabled()){
										try {
											
											int esito = JOptionPane.showConfirmDialog(null, "Sei sicuro?", "Conferma Rimozione", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
											if (esito == JOptionPane.OK_OPTION){
												serviceGate.eliminaPartecipazione(id);
												bottoneElimina[cur].setBackground(Color.BLACK);
												bottoneElimina[cur].setText("Eliminata");
												bottoneElimina[cur].setForeground(Color.WHITE);
												bottoneElimina[cur].setEnabled(false);
											}																				
																			
										} catch (UserNotLoggedException e) {
											JOptionPane.showMessageDialog(null, "Non sei loggato", "Errore", JOptionPane.ERROR_MESSAGE);				
										}
									}	
								}

								@Override
								public void mouseExited(MouseEvent arg0) {}

								@Override
								public void mouseEntered(MouseEvent arg0) {}

								@Override
								public void mouseReleased(MouseEvent arg0) {}
								
							});
							
							//fine bottoneElimina
						}
					}
					else{
						
					}
					
					//END
					frameVisualizza.pack();
					//frameVisualizza.setSize(1000,400);
					frameVisualizza.setVisible(true);
					//frameVisualizza.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					frameVisualizza.setResizable(false);
				} catch (UserNotLoggedException e) {
					JOptionPane.showMessageDialog(null, "Non sei loggato", "Errore", JOptionPane.ERROR_MESSAGE);
				}
								
				
				
			}
			
			@Override
			public void mouseExited(MouseEvent arg0) {}
			
			@Override
			public void mouseEntered(MouseEvent arg0) {}
			
			@Override
			public void mouseClicked(MouseEvent arg0) {}
		
		});
		
		
		bottoneNuovaPartecipazione.addMouseListener(	new MouseListener() {
			
			private JPanel pannelloCentraleNuova;
			private JPanel pannelloFormNuova;
			private JPanel pannelloBottoneNuova;
			private JLabel labelPartenzaNuova;
			private JTextField areaPartenzaNuova;
			private JLabel labelArrivoNuova;
			private JTextField areaArrivoNuova;
			private JCheckBox checkTotale;
			private JCheckBox checkParziale;
			private JButton bottoneCerca;
			private JPanel pannelloBassoNuova;
			private JPanel pannelloListaPercorsiNuova;

			@Override
			public void mouseReleased(MouseEvent arg0) {}
			
			@Override
			public void mousePressed(MouseEvent arg0) {
				
					// ******************* FINESTRA NUOVA PARTECIPAZIONE **********************//
										
					// Inizializzazione Frame
					frameNuova = new JFrame("LESS-CAOS - Nuova Partecipazione");
					frameNuova.setLayout(new BorderLayout());
					
					
					// Inizializzazione e Inserimento pannelli principali
					pannelloTitoloNuova = new JPanel();
					pannelloTitoloNuova.setLayout(new FlowLayout());
					pannelloTitoloNuova.setBackground(Color.DARK_GRAY);
					frameNuova.add(pannelloTitoloNuova, BorderLayout.NORTH);
					
					pannelloCorpoNuova = new JPanel();
					pannelloCorpoNuova.setLayout(new FlowLayout());
					//pannelloCorpo.setBackground(Color.LIGHT_GRAY);
					frameNuova.add(pannelloCorpoNuova, BorderLayout.CENTER);
					
							
					pannelloCentraleNuova = new JPanel();
					pannelloCentraleNuova.setLayout(new BoxLayout(pannelloCentraleNuova, BoxLayout.Y_AXIS));
					pannelloCorpoNuova.add(pannelloCentraleNuova);
					
								
					
					// Inizializzazione e Inserimento label
					titoloNuova = new JLabel("Nuova Partecipazione");
					titoloNuova.setForeground(Color.WHITE);
					pannelloTitoloNuova.add(titoloNuova);
					
					// Inizializzazione e Inserimento pannello form
					pannelloFormNuova = new JPanel();
					pannelloFormNuova.setLayout(new GridLayout(8,2));
					//pannelloForm.setBackground(Color.LIGHT_GRAY);
					pannelloCentraleNuova.add(pannelloFormNuova);
					
					pannelloBottoneNuova = new JPanel();
					pannelloBottoneNuova.setLayout(new FlowLayout());
					pannelloCentraleNuova.add(pannelloBottoneNuova);
					
					
					//Inizializzazioni e Inserimento label e textField								
					pannelloFormNuova.add(new JLabel(""));
					pannelloFormNuova.add(new JLabel(""));
					
					labelPartenzaNuova = new JLabel("Tappa Partenza: ");
					pannelloFormNuova.add(labelPartenzaNuova);
					
					areaPartenzaNuova = new JTextField(10);
					pannelloFormNuova.add(areaPartenzaNuova);
													
					pannelloFormNuova.add(new JLabel(""));
					pannelloFormNuova.add(new JLabel(""));				
													
					labelArrivoNuova = new JLabel("Tappa Arrivo: ");
					pannelloFormNuova.add(labelArrivoNuova);
					
					areaArrivoNuova = new JTextField(10);
					pannelloFormNuova.add(areaArrivoNuova);
													
					pannelloFormNuova.add(new JLabel(""));
					pannelloFormNuova.add(new JLabel(""));
					
					pannelloFormNuova.add(new JLabel(""));

					checkTotale = new JCheckBox("Totale", true);
					pannelloFormNuova.add(checkTotale);
					
					pannelloFormNuova.add(new JLabel(""));
					
					checkParziale = new JCheckBox("Parziale", false);
					pannelloFormNuova.add(checkParziale);
					
					ButtonGroup gruppo = new ButtonGroup();
					gruppo.add(checkParziale);
					gruppo.add(checkTotale);
					
					pannelloFormNuova.add(new JLabel(""));
					pannelloFormNuova.add(new JLabel(""));
					
					
					// Inizializzazione e Inserimento button registra
					bottoneCerca = new JButton("Cerca");		
					bottoneCerca.setEnabled(true);
					
					pannelloBottoneNuova.add(bottoneCerca);
						
										
					
					//*** Eventi ***/
				
					bottoneCerca.addMouseListener( new MouseListener(){

						private JFrame frameVisualizzaNuova;
						private JPanel pannelloTitoloVisualizzaNuova;
						private JLabel titoloVisualizzaNuova;
						private JPanel[] pannelloBottoneIscrivi;
						private JButton[] bottoneIscrivi;

						@Override
						public void mouseClicked(MouseEvent arg0) {}

						@Override
						public void mouseEntered(MouseEvent arg0) {}

						@Override
						public void mouseExited(MouseEvent arg0) {}

						@Override
						public void mousePressed(MouseEvent arg0) {
							
							// controllo che tutti i campi importanti siano stati completati
							if (	( (areaPartenzaNuova.getText() != null) && (!areaPartenzaNuova.getText().trim().equals("")) ) &&
									( (areaArrivoNuova.getText() != null) && (!areaArrivoNuova.getText().trim().equals("")) ) &&
									( (checkTotale.isSelected()) || (checkParziale.isSelected())	)	){
							
								String partenza = areaPartenzaNuova.getText();
								String arrivo = areaArrivoNuova.getText();
								boolean includi_parziali = checkParziale.isSelected();
								
								listaPercorsi = null;																
								try {
									listaPercorsi = serviceGate.ottieniListaPercorsi(partenza, arrivo, includi_parziali);
									 
									//***************** FRAME SCELTA PERCORSI **********************//
										
										
									frameVisualizzaNuova = new JFrame("LESS-CAOS");
									frameVisualizzaNuova.setLayout(new BorderLayout());
									
									
									// Inizializzazione e Inserimento pannelli principali
									pannelloTitoloVisualizzaNuova = new JPanel();
									pannelloTitoloVisualizzaNuova.setLayout(new FlowLayout());
									pannelloTitoloVisualizzaNuova.setBackground(Color.DARK_GRAY);
									frameVisualizzaNuova.add(pannelloTitoloVisualizzaNuova, BorderLayout.NORTH);
									
									// Inizializzazione e Inserimento label
									titoloVisualizzaNuova = new JLabel("Percorsi Trovati");
									titoloVisualizzaNuova.setForeground(Color.WHITE);
									pannelloTitoloVisualizzaNuova.add(titoloVisualizzaNuova);
									pannelloBassoNuova = new JPanel();
									pannelloBassoNuova.setLayout(new FlowLayout());
									frameVisualizzaNuova.add(pannelloBassoNuova, BorderLayout.CENTER);
									
									
									pannelloListaPercorsiNuova = new JPanel();
									pannelloListaPercorsiNuova.setBackground(Color.white);
									pannelloBassoNuova.add(pannelloListaPercorsiNuova);
									
									GridLayout layout = new GridLayout(1,10);
									//layout.setHgap(20);
									pannelloListaPercorsiNuova.setLayout(layout);
									
															
									// Inizializzazione e Inserimento label
									
									JLabel lPartenza = new JLabel("Partenza");
									lPartenza.setOpaque(true);
									lPartenza.setBackground(Color.GRAY);
									lPartenza.setForeground(Color.WHITE);
									lPartenza.setPreferredSize(new Dimension(100, 0));
									
									JLabel lArrivo = new JLabel("Arrivo");
									lArrivo.setOpaque(true);
									lArrivo.setBackground(Color.GRAY);
									lArrivo.setForeground(Color.WHITE);
									
									JLabel lTappe = new JLabel("Tappe");
									lTappe.setOpaque(true);
									lTappe.setBackground(Color.GRAY);
									lTappe.setForeground(Color.WHITE);
									
									JLabel lOraPartenza = new JLabel("Ora Partenza");
									lOraPartenza.setOpaque(true);
									lOraPartenza.setBackground(Color.GRAY);
									lOraPartenza.setForeground(Color.WHITE);
									
									JLabel lOraArrivo = new JLabel("Ora Arrivo");
									lOraArrivo.setOpaque(true);
									lOraArrivo.setBackground(Color.GRAY);
									lOraArrivo.setForeground(Color.WHITE);
									
									JLabel lData = new JLabel("Data");
									lData.setOpaque(true);
									lData.setBackground(Color.GRAY);
									lData.setForeground(Color.WHITE);
									
									JLabel lTipoVeicolo = new JLabel("Tipo Veicolo");
									lTipoVeicolo.setOpaque(true);
									lTipoVeicolo.setBackground(Color.GRAY);
									lTipoVeicolo.setForeground(Color.WHITE);
									
									JLabel lNumeroPosti = new JLabel("Numero Posti");
									lNumeroPosti.setOpaque(true);
									lNumeroPosti.setBackground(Color.GRAY);
									lNumeroPosti.setForeground(Color.WHITE);				
																
									JLabel lIssuer = new JLabel("Issuer");
									lIssuer.setOpaque(true);
									lIssuer.setBackground(Color.GRAY);
									lIssuer.setForeground(Color.WHITE);
									
									
									JLabel lVuoto = new JLabel("");
									lVuoto.setOpaque(true);
									lVuoto.setBackground(Color.GRAY);//pannelloCorpoVisualizza.getBackground());
									
									pannelloListaPercorsiNuova.add(lPartenza);//, JLabel.CENTER));
									pannelloListaPercorsiNuova.add(lArrivo);//, JLabel.CENTER));			
									pannelloListaPercorsiNuova.add(lOraPartenza);//, JLabel.CENTER));
									pannelloListaPercorsiNuova.add(lOraArrivo);//, JLabel.CENTER));
									pannelloListaPercorsiNuova.add(lTappe);
									pannelloListaPercorsiNuova.add(lData);//, JLabel.CENTER));
									pannelloListaPercorsiNuova.add(lTipoVeicolo);//, JLabel.CENTER));
									pannelloListaPercorsiNuova.add(lNumeroPosti);
									pannelloListaPercorsiNuova.add(lIssuer);
									pannelloListaPercorsiNuova.add(lVuoto);
									
									
									
									//+++ Inserimento Partecipazione +++//
									
								
									if (!listaPercorsi.isEmpty()){
										layout.setRows(listaPercorsi.size()+1);
										pannelloBottoneIscrivi = new JPanel[listaPercorsi.size()];
										bottoneIscrivi = new JButton[listaPercorsi.size()];
										
										for (i=0; i<listaPercorsi.size(); i++){
											JLabel ldPartenza = new JLabel(listaPercorsi.get(i).getPartenza().getIndirizzo());
											JLabel ldArrivo = new JLabel(listaPercorsi.get(i).getArrivo().getIndirizzo());												
											JLabel ldOrarioPart = new JLabel(listaPercorsi.get(i).getOrarioPart().toString());
											JLabel ldOrarioArr = new JLabel(listaPercorsi.get(i).getOrarioArr().toString());						
											//tappe
											List<Tappa> listaTappe = listaPercorsi.get(i).getListaTappe();
											JLabel ldTappe;
											if (listaTappe == null) ldTappe = new JLabel("-");
											else{
												String sTappe = "<html>";
												for(Tappa tappa: listaTappe){
													sTappe += tappa.getIndirizzo()+"<br/>";
												}
												sTappe += "</html>";
												ldTappe = new JLabel(sTappe);
											}
											// fine tappe
											//data
											Date data = listaPercorsi.get(i).getData();
											JLabel ldData;
											if(data == null) ldData = new JLabel("giornaliera");
											else ldData = new JLabel(data.toString());
											// fine data
											JLabel ldVeicolo = new JLabel(listaPercorsi.get(i).getTipoVeicolo().toString());
											JLabel ldPosti = new JLabel(String.valueOf(listaPercorsi.get(i).getNumPosti()));
											JLabel ldIssuer = new JLabel(listaPercorsi.get(i).getIssuer().getNome()+" "+
													listaPercorsi.get(i).getIssuer().getCognome());
											
																														
											
											ldPartenza.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldPartenza.setOpaque(true);  ldPartenza.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldPartenza);
											
											ldArrivo.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldArrivo.setOpaque(true); ldArrivo.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldArrivo);							
											
											ldOrarioPart.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldOrarioPart.setOpaque(true); ldOrarioPart.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldOrarioPart);
											
											ldOrarioArr.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldOrarioArr.setOpaque(true); ldOrarioArr.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldOrarioArr);
											
											ldTappe.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldTappe.setOpaque(true); ldTappe.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldTappe);
											
											ldData.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldData.setOpaque(true); ldData.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldData);
											
											ldVeicolo.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldVeicolo.setOpaque(true); ldVeicolo.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldVeicolo);
											
											ldPosti.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldPosti.setOpaque(true); ldPosti.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldPosti);
																						
											ldIssuer.setVerticalAlignment(JLabel.TOP);
											if (i%2 == 1){ ldIssuer.setOpaque(true); ldIssuer.setBackground(pannelloBassoNuova.getBackground()); }
											pannelloListaPercorsiNuova.add(ldIssuer);
										
											
											// bottoneIscrivi
											
											pannelloBottoneIscrivi[i] = new JPanel();
											pannelloBottoneIscrivi[i].setLayout(new FlowLayout());
											if (i%2 == 1) pannelloBottoneIscrivi[i].setBackground(pannelloBassoNuova.getBackground());
											else pannelloBottoneIscrivi[i].setBackground(Color.WHITE);
											pannelloListaPercorsiNuova.add(pannelloBottoneIscrivi[i]);
											
											bottoneIscrivi[i] = new JButton("Iscrivi");
											if (listaPercorsi.get(i).getNumPosti() == 0) {
												bottoneIscrivi[i].setEnabled(false);
											}
											pannelloBottoneIscrivi[i].add(bottoneIscrivi[i]);
											
											bottoneIscrivi[i].addMouseListener( new MouseListener(){
												
												Disponibilita iscrizione = listaPercorsi.get(i);
												int cur = i;
												@Override
												public void mouseClicked(MouseEvent arg0) {}
		
												@Override
												public void mousePressed(MouseEvent arg0) {
													if (bottoneIscrivi[cur].isEnabled()){
														try {
															
															int esito = JOptionPane.showConfirmDialog(null, "Sei sicuro?", "Conferma Rimozione", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
															if (esito == JOptionPane.OK_OPTION){
																
																// trova tappa mia partenza e arrivo
																Tappa tappaMiaPartenza = null;
																if (iscrizione.getPartenza().getIndirizzo().equals(areaPartenzaNuova.getText())){
																	tappaMiaPartenza = iscrizione.getPartenza();
																}
																else{
																	for (Tappa tappaEsaminata: (List<Tappa>)iscrizione.getListaTappe()){
																		if (tappaEsaminata.getIndirizzo().equals(areaPartenzaNuova.getText())){
																			tappaMiaPartenza = tappaEsaminata;
																			break;
																		}
																	}
																}
																
																Tappa tappaMioArrivo = null;
																if (iscrizione.getArrivo().getIndirizzo().equals(areaArrivoNuova.getText())){
																	tappaMioArrivo = iscrizione.getArrivo();
																}
																else{
																	for (Tappa tappaEsaminata: (List<Tappa>)iscrizione.getListaTappe()){
																		if (tappaEsaminata.getIndirizzo().equals(areaArrivoNuova.getText())){
																			tappaMioArrivo = tappaEsaminata;
																			break;
																		}
																	}
																}
																
																serviceGate.inserisciPercorso(iscrizione, tappaMiaPartenza, tappaMioArrivo);
																
																
																bottoneIscrivi[cur].setBackground(Color.BLUE);
																bottoneIscrivi[cur].setText("Iscritto");
																bottoneIscrivi[cur].setForeground(Color.WHITE);
																bottoneIscrivi[cur].setEnabled(false);
																
															}																				
																							
														} catch (UserNotLoggedException e) {
															JOptionPane.showMessageDialog(null, "Non sei loggato", "Errore", JOptionPane.ERROR_MESSAGE);				
														}
													}	
												}
		
												@Override
												public void mouseExited(MouseEvent arg0) {}
		
												@Override
												public void mouseEntered(MouseEvent arg0) {}
		
												@Override
												public void mouseReleased(MouseEvent arg0) {}
												
											});
											
											//fine bottoneElimina
										}
									}
									//END
									frameVisualizzaNuova.pack();
									//frameNuova.setSize(500,400);
									frameVisualizzaNuova.setVisible(true);
									//frameNuova.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
									frameNuova.dispose();
		
								 
								} catch (UserNotLoggedException e) {
									JOptionPane.showMessageDialog(null, "Non sei loggato", "Errore", JOptionPane.ERROR_MESSAGE);
								}	
							}	
							else{
								 JOptionPane.showMessageDialog(null, "Campi non completati", "Inserimento Errato", JOptionPane.ERROR_MESSAGE);
							}
						}	
						@Override
						public void mouseReleased(MouseEvent arg0) {}
					});
			

					//END
					frameNuova.pack();
					//frameNuova.setSize(500,400);
					frameNuova.setVisible(true);
					//frameNuova.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
								
			}
			
			@Override
			public void mouseExited(MouseEvent arg0) {}
			
			@Override
			public void mouseEntered(MouseEvent arg0) {}
			
			@Override
			public void mouseClicked(MouseEvent arg0) {}
		
		});	
	}	

}
